# 使用try-except机制进行异常处理

def add():
    try:
        s = input('please enter two numbers separated by comma: \n')
        num1 = int(s.split(',')[0].strip())
        num2 = int(s.split(',')[1].strip())
        print('the result is :')
        print(f'{num1} + {num2} = {num1 + num2}')
    # 异常捕获: except block会catch住类型相匹配的异常
    except ValueError as err:
        print(f'ValueError: {err}')
    except IndexError as err:
        print(f'IndexError: {err}')
    # 在最后一个except block中捕获Exception,它是所有异常的基类
    # 当程序中存在多except block时,最多只有一个except block会被执行
    # 如果多个except声明的异常类型都与实际相匹配,那么只有最前面的except block会被执行,其他则被忽略
    except Exception as err:
        print(f'Exception: {err}')
    # 可以在except后面省略异常类型,这样表示匹配任意异常。但是这种写法匹配的异常过于宽泛,不推荐
    except:
        print('other Exception')


if __name__ == '__main__':
    add()
